#range()函数可以很方便地生成一系列数字。我们可以通过以下方式来生成一个包含0-5的整数的列表。
nums = list(range(0,6))
print(nums)
#实际上range()可以只传入一个参数，仅用于指定范围的结束位置，而开始位置默认为0。如range(0, 6)可以简写为range(6)
nums = list(range(6))
print(nums)
#range()还可以传入三个参数，第三个参数表示序列所选择的步长（step）。
#如果需要指定步长，那么前两个参数是不能省略的
nums =list(range(0,6,2))
print(nums)
"""
循环语句中的for和in均属于Python中保留的关键字。
如果使用英文直译的话，for的意思是“对于”，in的意思是“在”。
故for 变量 in 可迭代对象:这句语法可以简单理解为，“对于在可迭代对象中的变量做某些操作”。
至于可迭代对象的具体含义，我们会在后续内容中再展开讲解。在目前我们只需要接受range就是一个可迭代对象即可。
for语句结尾的冒号同样非常重要。冒号:等于告诉Python，接着的下一行是循环的第一行。
for循环的基本语法结构如下：
在Python中，in是一个关键字，主要用于检查一个值是否存在于某个序列（如字符串、列表、元组）或集合、字典中。
它的使用非常直观且方便，可以用在条件判断、循环等多种场景。
for 变量 in 可迭代对象:
    '''
    对变量做一些操作
    '''
    pass
"""
for i in range(6):
    print(i)
#以下代码能够检查某个字符串是否位于字符串列表fruits中
fruits = ['apple', 'banana', 'cherry']
# 使用 in 检查元素是否存在于列表中
print('apple' in fruits)  # 输出: True
print('grape' in fruits)  # 输出: False
#以下代码能够检查某个子字符串是否位于字符串中
text = "Hello, world!"
# 使用 in 检查子字符串是否存在于字符串中
print('world' in text)   # 输出: True
print('python' in text)  # 输出: False
#在for循环中，通过索引访问列表元素。
code_languages = ["python", "cpp", "java", "golang"]
for i in range(4):
    print(code_languages[i])
#如果想要逆序访问列表中的元素，可以通过将range()的步长（第三个参数）设置为-1来实现。
code_languages = ["python", "cpp", "java", "golang"]
for i in range(3, -1, -1):
    print(code_languages[i])
#当我们对一个列表进行频繁修改之后，它的长度可能已经不再是最初的数值了。内置函数len()可以很方便地计算出列表的长度。
code_languages = ["python", "cpp", "java", "golang"]
n = len(code_languages)
print(n)
#如果我们直接将某个特定列表而不是range()放在上述可迭代对象的位置，那么for循环语句中的变量指的将不再是数字索引，而是列表中一个个的元素。
code_languages = ["python", "cpp", "java", "golang"]
for code_language in code_languages:
    print(code_language)
#如果想通过类似方法直接逆序访问列表元素，我们可以使用切片获得逆序列表，再完成循环。
code_languages = ["python", "cpp", "java", "golang"]
for code_language in code_languages[::-1]:
    print(code_language)
"""
在前面的讲解中，其实我们规避了对晦涩名词可迭代对象的解释。
Python中任意的对象，只要它定义了可以返回一个迭代器的__iter__方法，或者定义了可以支持下标索引的__getitem__方法，那么这个对象就是一个可迭代对象。
作为初学者，我们可以这样简单的理解：可以放在for循环中进行遍历的对象，就是一个可迭代对象。
字符串str、列表list、元组tuple、range，以及后面会学的集合set、字典dict，都是可迭代对象。
整数int、浮点数float不是可迭代对象。
"""
#while循环常用于不确定循环次数的循环，其基本语法如下：
# while 循环条件:
#     '''
#     做一些操作
#     '''
#     pass
count = 1
while count <= 5:
    print("Count is: ", count)
    count += 1
#while循环可以有一个else子句，当循环条件为 False 时执行 else 代码块。
count = 1
while count <= 5:
    print("Count is:", count)
    count += 1
else:
    print("Loop is over")
#for循环嵌套
for i in range(3):
    for j in range(2):
        print(f"Outer: {i}, Inner: {j}")
#while循环嵌套
outer = 0
while outer < 3:
    inner = 0
    while inner < 2:
        print(f"Outer: {outer}, Inner: {inner}")
        inner += 1
    outer += 1
#二维列表的初始化和列表类似，我们可以通过嵌套列表的方式来定义一个二维列表。
# 定义一个 2x3 的二维列表
matrix = [
    [1, 2, 3],
    [4, 5, 6]
]
print(matrix)
#二维列表的访问与修改
# 通过双重的for循环嵌套，我们可以非常方便地访问和修改二维列表中的值。
# 譬如我们想让二列列表中的每一个元素递增1，可以通过以下代码进行
# 定义一个 2x3 的二维列表
matrix = [
    [1, 2, 3],
    [4, 5, 6],
]

n = len(matrix)        # 二维列表的行数
m = len(matrix[0])     # 二维列表的列数
for i in range(n):
    for j in range(m):
        # 令每一个元素matrix[i][j]自身递增1
        matrix[i][j] += 1
print(matrix)